// #include "../server.hpp"

// void HandleClose(Channel *channel)
// {
//     INFO_LOG("void HandleClose()!!!, close: %d", channel->Fd());
//     channel->Remove();  // 无数据可读或者被信号打断或者出错，直接 粗暴 移除监控
//     delete channel;
// }

// void HandleWrite(Channel *channel)
// {
//     int fd = channel->Fd();
//     const char *data = "调用 HandleWrite 给你回复了";
//     int ret = send(fd, data, strlen(data), 0);
//     if(ret < 0)
//     {
//         return HandleClose(channel);
//     }
//     INFO_LOG("void HandleWrite()!!!");
// }

// void HandleRead(Channel *channel)
// {
//     int fd = channel->Fd();
//     char buf[1024] = {0};
//     int ret = recv(fd, buf, sizeof(buf), 0);
//     INFO_LOG("void HandleRead()!!!, buf: %s", buf);
//     if(ret <= 0)
//     {
//         HandleClose(channel);   // 关闭释放
//         return;
//     }

//     HandleWrite(channel);       // 调用写事件回调，对接收的数据进行回复
// }



// void Acceptor(Poller *poller, Channel *lst_channel)
// {
//     int fd = lst_channel->Fd();
//     int newfd = accept(fd, NULL, NULL);

//     Channel *newchannel = new Channel(poller, newfd);       // 为新连接创建 Channel
//     newchannel->SetReadCallback(std::bind(HandleRead, newchannel));  // 为通信套接字设置 事件回调
//     newchannel->SetWriteCallback(std::bind(HandleWrite, newchannel));
//     newchannel->SetCloseCallback(std::bind(HandleClose, newchannel));

//     newchannel->EnableRead();   // 启动事件监控
// }

// void t1()
// {
//     Poller poller;
//     Socket lst_sock;
//     lst_sock.CreateServer(8787);
//     Channel channel(&poller, lst_sock.Fd());    // 为 监听套接字 创建一个 Channel 进行事件管理 、添加修改移除
//     channel.SetReadCallback(std::bind(Acceptor, &poller, &channel));       // 设置监听套接字的可读监控，这里回调函数需要为 新连接创建 Channel 并添加监控

//     channel.EnableRead();   // 监听套接字启动可读事件监控

//     while(1)
//     {
//         std::vector<Channel*> actives;
//         poller.Poll(&actives);  // epoll 正式开始监控，轮询事件就绪队列
//         for (auto &a : actives)
//         {
//             a->HandleEvent();   // 活跃链接需要被处理了，只管调用 Channel 中的接口处理

//         }
//     }
//     lst_sock.Close();
// }


// int main()
// {
//     t1();

//     return 0;
// }